#ifndef JSONTRANSLATOR_H
#define JSONTRANSLATOR_H
#include <QJsonDocument>
#include <QJsonObject>
#include <QJsonValue>
#include <QJsonArray>
#include "Narration/narrationnode.h"
#include "GameData/gamedata.h"
#include "UIEditor/mybutton.h"
#include "UIEditor/mylabel.h"
#include "UIEditor/mywidget.h"
#include "Render/particlesystem.h"
#include "GameData/gamedata.h"
#include "GameUI/recorditem.h"
class JsonTranslator
{
public:
    JsonTranslator();
    ~JsonTranslator();

    //读取路径中的Json字符串并转为QJsonObject
    QJsonObject ReadAndParseJson(QString path);
    //节点
    QJsonObject* ToJson(NarrationNode* node);
    QJsonObject* ToJson(RenderTarget* rt);
    QJsonObject* ToJson(BGM* bgm);
    QJsonObject* ToJson(Linker* linker);
    NarrationNode* NodeFromJson(QJsonObject* ob);
    RenderTarget* RenderTargetFromJson(QJsonObject* ob);
    BGM* SoundFromJson(QJsonObject* ob);
    Linker* LinkerFromJson(QJsonObject* ob);

    //UI数据
    QJsonObject* DataToJson();
    QJsonObject* ToJson(MyWidget* widget);
    QJsonObject* ToJson(MyButton* btn);
    QJsonObject* ToJson(MyLabel* label);
    QJsonObject* ToJson(LabelInfo* info);
    QJsonObject* ToJson(ButtonInfo* info);
    MyWidget* WidgetFromJson(QJsonObject* ob);
    MyButton* ButtonFromJson(QJsonObject* ob);
    MyLabel* LabelFromJson(QJsonObject* ob);
    ButtonInfo* BtnInfoFromJson(QJsonObject* ob);
    LabelInfo* LabelInfoFromJson(QJsonObject* ob);

    //特效数据
    QJsonObject* ToJson(ParticleSystemInfo* info);
    ParticleSystemInfo* ParticleInfoFromJson(QJsonObject* ob);

    //游戏数值
    QJsonObject* ToJson();
    void ReadData(QJsonObject* ob);

    //存档
    QJsonObject* ToJson(RecordItem* item);
    RecordItem* RecordFromJson(QJsonObject* ob);

    //其他（暂时只有图鉴用）
    QJsonObject* ToJson(QVector<QString> v);
    QVector<QString> StringVectorFromJson(QJsonObject* ob);

    //QJsonObject与QByteArray互转
    QByteArray Json2Byte(QJsonObject* ob);
    QJsonObject Byte2Json(QByteArray* json);
    //临时函数
    void Write(QByteArray s);
};

#endif // JSONTRANSLATOR_H
